home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
turbovis
/
tvtoyc01.zip
/
HELPBASE.H
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-07
|
5KB
|
204 lines
/* ------------------------------------------------------------------------*/
/* */
/* HELPBASE.H */
/* */
/* Copyright (c) Borland International 1991 */
/* All Rights Reserved. */
/* */
/* defines the classes TParagraph, TCrossRef, THelpTopic, THelpIndex, */
/* THelpFile */
/* */
/* ------------------------------------------------------------------------*/
const long magicHeader = 0x46484246L; //"FBHF"
#define cHelpColor "\x37\x3F\x3A\x13\x13\x30\x3E\x1E"
#define cHelpBlackWhite "\x07\x0F\x07\x70\x70\x07\x0F\x70"
#define cHelpMonochrome "\x07\x0F\x07\x70\x70\x07\x0F\x70"
#define cHelpViewer "\x06\x07\x08"
#define cHelpWindow "\x40\x41\x42\x43\x44\x45\x46\x47"
// TParagraph
class TParagraph
{
public:
TParagraph() {}
TParagraph *next;
Boolean wrap;
ushort size;
char *text;
};
// TCrossRef
class TCrossRef
{
public:
TCrossRef() {}
int ref;
int offset;
uchar length;
};
typedef void (*TCrossRefHandler) ( opstream&, int );
class THelpTopic: public TObject, public TStreamable
{
public:
THelpTopic();
THelpTopic( StreamableInit ) {};
virtual ~THelpTopic();
void addCrossRef( TCrossRef ref );
void addParagraph( TParagraph *p );
void getCrossRef( int i, TPoint& loc, uchar& length, int& ref );
char *getLine( int line );
int getNumCrossRefs();
int numLines();
void setCrossRef( int i, TCrossRef& ref );
void setNumCrossRefs( int i );
void setWidth( int aWidth );
TParagraph *paragraphs;
int numRefs;
TCrossRef *crossRefs;
private:
char *wrapText( char *text, int size, int& offset, Boolean wrap );
void readParagraphs( ipstream& s );
void readCrossRefs( ipstream& s );
void writeParagraphs( opstream& s );
void writeCrossRefs( opstream& s );
void disposeParagraphs();
const char *streamableName() const
{ return name; }
int width;
int lastOffset;
int lastLine;
TParagraph *lastParagraph;
protected:
virtual void write( opstream& );
virtual void *read( ipstream& );
public:
static const char * const near name;
static TStreamable *build();
};
inline ipstream& operator >> ( ipstream& is, THelpTopic& cl )
{ return is >> (TStreamable&)cl; }
inline ipstream& operator >> ( ipstream& is, THelpTopic*& cl )
{ return is >> (void *&)cl; }
inline opstream& operator << ( opstream& os, THelpTopic& cl )
{ return os << (TStreamable&)cl; }
inline opstream& operator << ( opstream& os, THelpTopic* cl )
{ return os << (TStreamable *)cl; }
// THelpIndex
class THelpIndex : public TObject, public TStreamable
{
public:
THelpIndex();
THelpIndex( StreamableInit ) {};
virtual ~THelpIndex();
long position( int );
void add( int, long );
ushort size;
long *index;
private:
const char *streamableName() const
{ return name; }
protected:
virtual void write( opstream& );
virtual void *read( ipstream& );
public:
static const char * const near name;
static TStreamable *build();
};
inline ipstream& operator >> ( ipstream& is, THelpIndex& cl )
{ return is >> (TStreamable&)cl; }
inline ipstream& operator >> ( ipstream& is, THelpIndex*& cl )
{ return is >> (void *&)cl; }
inline opstream& operator << ( opstream& os, THelpIndex& cl )
{ return os << (TStreamable&)cl; }
inline opstream& operator << ( opstream& os, THelpIndex* cl )
{ return os << (TStreamable *)cl; }
// THelpFile
class THelpFile : public TObject
{
public:
THelpFile( fpstream& s );
virtual ~THelpFile();
THelpTopic *getTopic( int );
THelpTopic *invalidTopic();
void recordPositionInIndex( int );
void putTopic( THelpTopic* );
fpstream *stream;
Boolean modified;
THelpIndex *index;
long indexPos;
#ifdef HELPEXTENSIONS
Boolean helpAlreadyPopped;
enum {maxOldTopics=20};
static int oldFront;
static int oldCount;
static ushort oldTopics[maxOldTopics];
#endif
};
#ifdef HELPEXTENSIONS
const int previousTopic = (int)0xEEEE; // A unique help topic number
// Doesn't have to be unique unless you use modeless help windows
const ushort cmSwitchToTopic = 63052;
#endif
extern void notAssigned( opstream& s, int value );
extern TCrossRefHandler crossRefHandler;